package com.qf.java2201.listener;

import com.qf.java2201.pojo.HType;
import com.qf.java2201.service.OrderService;
import com.qf.java2201.service.TypeService;
import com.qf.java2201.service.impl.OrderServiceImpl;
import com.qf.java2201.service.impl.TypeServiceImpl;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.util.*;

/**
 * @date 2022/4/7
 * @desc
 */
@WebListener
public class AppListener implements ServletContextListener {


    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("应用初始化");

        // 准备数据字典的数据


        TypeService typeService = new TypeServiceImpl();

        List<HType> htypeList = typeService.findAllTypes();

        //把数据字典的数据放在 servletContext 中
        ServletContext servletContext = sce.getServletContext();

        //数据字典集合放入域对象
        servletContext.setAttribute("ts",htypeList);

        // 准备新闻列表数据  也放在域对象





        // 准备一个 定时器  定时更新未付款的预约单的状态

        OrderService orderService = new OrderServiceImpl();
        //创建一个定时器  Timer  每天的 凌晨一点  自动把未付款的单子 作废掉

        Calendar instance = Calendar.getInstance();
        //当前时间
        instance.setTime(new Date());

        // 把事件翻到第二天凌晨1点

        instance.set(Calendar.DATE,instance.get(Calendar.DATE)+1);  // 翻到第二天
        instance.set(Calendar.HOUR_OF_DAY,1);  // 凌晨一点
        instance.set(Calendar.MINUTE,0);
        instance.set(Calendar.SECOND,0);

        //创建一个定时器
        Timer timer = new Timer();

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                orderService.updateOrderStatus(null,23);
            }
        },instance.getTime(),1000*60*60*24);

    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}
